package com.learn.constant;

/**
 * 请求头常量类
 *
 * @author yaoqihui
 * @version 2022/10/20
 * @see [相关类/方法]
 */
public class HeadersConstants
{
	private HeadersConstants ()
	{

	}

	/**
	 * 鉴权字段
	 */
	public static final String AUTHORIZATION = "Authorization";

	/**
	 * 旧的鉴权请求头，如果从Authorization获取不到会从这个获取
	 */
	public static final String OLD_TOKEN_HEADER = "token";

	/**
	 * 表示业务调用链跟踪id，128位随机字符。
	 * 针对一次完整业务场景，x-trace-id是一样的，不同次的业务场景是不同的。
	 */
	public static final String TRACE_ID = "X-Trace-Id";

	/**
	 * 表示渠道。如APP、H5等
	 */
	public static final String CHANNEL = "X-Channel";

	/**
	 * 表示客户端的信息
	 */
	public static final String USER_AGENT = "User-Agent";

	/**
	 * Csrf-Token（可选）
	 */
	public static final String CSRF_TOKEN = "Csrf-Token";

	/**
	 * 接入的网络类型，网络类型枚举值如下：
	 * 1、WiFi；
	 * 2、2G；
	 * 3、3G；
	 * 4、4G；
	 * 5、有线网络；
	 * 6、5G
	 * （可选）
	 */
	public static final String NET_TYPE = "X-NetType";

	/**
	 * 在消息头中增加x-DeviceInfo字段，格式为：
	 * 网络类型|用户终端IP|客户端类型|客户端当前版本|SDK当前版本|设备品牌|设备型号|设备标识| MAC地址|操作系统和版本|分辨率|客户端语言类型|设备经度|设备纬度|
	 * 每个字段信息中不允许出现‘|’符号。
	 * 关键字段说明如下：
	 * 客户端当前版本：格式如：V1.0、V1.2。
	 * SDK当前版本：格式如：V1.0、V1.2。
	 * 设备品牌：设备的英文品牌，由客户端根据设备厂商的统一定义填写。
	 * 设备型号：格式如：HuaweiU8860、NokiaN97、SAMSUNG9100，由客户端根据设备厂商的统一定义填写。
	 * 设备标识：终端设备唯一标识，手机、TV端都需要、H5可能取不到。(可以app自动生成)
	 * 操作系统和版本：格式如：android 2.3、ios 4.0，操作系统必须是全小写，和版本号之间以空格分隔。
	 * 分辨率：格式为aaaXbbb。
	 * 当某个字段不存在，则设置为空，但分隔符必带。
	 */
	public static final String DEVICE_INFO = "X-DeviceInfo";

	/**
	 * 表示合作伙伴编码，接入平台设置分配的枚举值。
	 */
	public static final String CHANNEL_SOURCE = "X-Channel-Source";

	/**
	 * X-MM-Source：
	 * 上架的应用市场编码。
	 */
	public static final String MM_SOURCE = "X-MM-Source";

	/**
	 * 客户端经过网关（Proxy， CDN等）所有IP的集合。多个IP使用”,”隔开，格式如下：
	 * clientIP, proxy1, proxy2.
	 * 当Portal/第三方服务器收到请求，如果请求消息头携带X-Forwarded-For，
	 * 则获取remoteAddr添加到X-Forwarded-For后面，如果没有携带X-Forwarded-For，则获取远端的RemoteAddr填充到X-Forwarded-For，然后转发给后端。
	 */
	public static final String FORWARDED_FOR = "X-Forwarded-For";

	/**
	 * 客户端启动来源
	 */
	public static final String SOURCE = "X-Source";

	/**
	 * 客户端生成的requestId，请求头携带
	 */
	public static final String REQUEST_ID = "Requestid";

	/**
	 * 渠道来源
	 */
	public static final String X_CHANNEL_SRC = "x-channelSrc";

	/**
	 * 业务操作Id
	 */
	public static final String X_ACTION_ID = "x-action-id";

	public static final String CONTENT_TYPE_NAME = "Content-Type";

	public static final String CONTENT_TYPE = "application/json;charset=utf-8";
}
